#include "xvalue.h"

namespace libxcom {

template<class T>
XValue<T>::XValue(const T &val, const std::string &expr)
    : t_(val)
    , expr_(expr)
{}

template<class T>
XValue<T>::XValue()
{}

template<class T>
XValue<T> &XValue<T>::operator=(const T &val)
{
    t_ = val;
    return *this;
}

template<class T>
const T &XValue<T>::operator()() const
{
    return t_;
}

template<class T>
XValue<T>::operator T() const
{
    return t_;
}

template<class T>
T &XValue<T>::get()
{
    return t_;
}

template<class T>
const T &XValue<T>::get() const
{
    return t_;
}

} // namespace libxcom
